# 函数（可以被重复使用的代码）

#求和函数
# def calc_sum(beg,end):
#     sum=0;
#     for i in range(beg,end+1):
#         sum+=i
#     print(sum)
# #调用函数
# calc_sum(1,100)

#举例
# def test():
#     print("hello world")
#
# test()#函数先定义后调用

#函数参数
# def test(a,b,c):
#     print(a,b,c)
# # 一个函数可以有一个形参, 也可以有多个形参, 也可以没有形参. 对类型没有要求
# # 一个函数的形参有几个, 那么传递实参的时候也得传几个. 保证个数要匹配.
# test(10)#error
# test(10,20,30,40)#error
# def test(a):#对类型没有要求
#     print(a)
# test(10)
# test("hello")
# test(True)
# def add(x,y):
#     return x+y
# print(add(10,20))
# print(add(1.3,2.4))

# 函数返回值（总是使用这个）
# def calcSum(beg, end):
#     sum = 0
#     for i in range(beg, end + 1):
#         sum += i
#     return sum
#
#
# result = calcSum(1, 100)
# print(result)

# 一个函数中可以有多个 return 语句
# def isOdd(num):
#     if num % 2 == 0:
#         return False
#     else:
#         return True
#
#
# result = isOdd(10)
# print(result)

# 一个函数是可以一次返回多个返回值的.
# def getPoint():
#     x = 10
#     y = 20
#     return x, y
# a, b = getPoint()
# #如果只想关注其中的部分返回值, 可以使用 _ 来忽略不想要的返回值
# _, b = getPoint()
# print(a,b)

# 变量只能在所在的函数内部生效.
# def getPoint():
#     x = 10
#     y = 20
#     return x, y
#
#
# getPoint()
# print(x, y)#error

# 如果是想在函数内部修改全局变量的值, 需要使用 global 关键字声明
# x = 20
# def test():
#     global x
#     x = 10
#     print(f'函数内部 x = {x}')
# test()
# print(f'函数外部 x = {x}')

# 函数执行过程
# def test():
#     print("执行函数内部代码")
#     print("执行函数内部代码")
#     print("执行函数内部代码")
# print("1111")
# test()
# print("2222")
# test()
# print("3333")
# test()

# 把一个函数的返回值, 作为另一个函数的参数, 这种操作称为 链式调用
# def isOdd(num):
#     if num % 2 == 0:
#         return False
#     else:
#         return True
# print(isOdd(10))#先执行括号里面的

#嵌套调用
# def a():
#     print("函数 a")
# def b():
#     print("函数 b")
#     a()
# def c():
#     print("函数 c")
#     b()
# def d():
#     print("函数 d")
#     c()
# d()





